/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package reputacao;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author marapao
 */
public class ReputacaoIndividual {

    private List<DadosReputacaoIndividual> reputacao;

    public ReputacaoIndividual(List<DadosReputacaoIndividual> reputacao) {
        this.reputacao = reputacao;
    }

    public ReputacaoIndividual() {
        this.reputacao = new ArrayList<DadosReputacaoIndividual>();
    }

    public List<DadosReputacaoIndividual> getReputacao() {
        return reputacao;
    }

    public void setReputacao(List<DadosReputacaoIndividual> reputacao) {
        this.reputacao = reputacao;
    }

    //remove dados da lista de reputações individuais com base nos parametros passados
    public void remove(String avaliador, String alvo) {
        List<DadosReputacaoIndividual> remocao = new ArrayList<DadosReputacaoIndividual>();

        for (DadosReputacaoIndividual dados : reputacao) {
            if (dados.getAgenteAlvo().equals(alvo) &&
                    dados.getAgenteAvaliador().equals(avaliador)) {
                remocao.add(dados);
            }
        }

        reputacao.removeAll(remocao);

    }

    //remove dados da lista de reputações individuais com base nos parametros passados
    public void remove(String avaliador, String alvo, String tipo) {
        List<DadosReputacaoIndividual> remocao = new ArrayList<DadosReputacaoIndividual>();

        for (DadosReputacaoIndividual dados : reputacao) {
            if (dados.getAgenteAlvo().equals(alvo) &&
                    dados.getAgenteAvaliador().equals(avaliador)&&
                    dados.getTipo().equals(tipo)) {
                remocao.add(dados);
                
            }
        }

        reputacao.removeAll(remocao);

    }

    //atualiza dados na Lista de reputações individuais
    public void atualiza(DadosReputacaoIndividual dados) {
        remove(dados.getAgenteAvaliador(), dados.getAgenteAlvo(), dados.getTipo());
        insere(dados);
    }

    //insere dados na Lista de reputações individuais
    public void insere(DadosReputacaoIndividual dados) {
        reputacao.add(dados);

    }

    //retorna as reputações individuais com base nos parametros passados
    public List<DadosReputacaoIndividual> reputacoesIndividuais(String alvo) {
        List<DadosReputacaoIndividual> result = new ArrayList<DadosReputacaoIndividual>();

        for (DadosReputacaoIndividual dados : reputacao) {
            if (dados.getAgenteAlvo().equals(alvo)) {
                result.add(dados);
            }
        }

        return result;

    }

    //retorna as reputações individuais com base nos parametros passados
    public List<DadosReputacaoIndividual> reputacoesIndividuais(String alvo, String avaliador) {
        List<DadosReputacaoIndividual> result = new ArrayList<DadosReputacaoIndividual>();

        for (DadosReputacaoIndividual dados : reputacao) {
            if (dados.getAgenteAlvo().equals(alvo)&&
                    dados.getAgenteAvaliador().equals(avaliador)) {
                result.add(dados);
            }
        }

        return result;

    }

    //retorna as reputações individuais com base nos parametros passados
    public DadosReputacaoIndividual reputacoesIndividual(String alvo, String avaliador, String tipo) {

        for (DadosReputacaoIndividual dados : reputacao) {
            if (dados.getAgenteAlvo().equals(alvo)&&
                    dados.getAgenteAvaliador().equals(avaliador)) {
                return  dados;
            }
        }

        return null;

    }



}
